Windows8アプリの共有チャームのつくりかた - blog.jgs.me
https://gyazo.com/8aa82d6a989edc95b45f8610a02e8da5
にもありますが、まずは Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView() にEventlistenerをaddするところからです。場合にもよりますが、だいたいは WinJS.Application.onactivate() の中でいいとおもいます。このとき、忘れてはいけないのがEventlistenerをremoveする部分を書き忘れないことです。これも、だいたいは WinJS.Application.oncheckpoint() の中でいいとおもいます。removeしないと、一度は共有チャームが発動できてもsuspendなどした後は使えなくなります。removeしてなかったことに気付かなくて何時間か無駄にしました。
これで共有チャームが押されたことをキャッチできるようになるので、次にどのデータを共有するかを書きます。ハンドラの引数がrequestというメソッドを持っているので、これにデータを投入します。request.data.properties.title には、共有チャームに出てくる画面のタイトルが指定できます。また、request.data.properties.description には同じく、その説明を指定できます。
https://gyazo.com/153cff1288462be3253a28d97ec8d812
その後は、共有するデータを request に指定します。request.data.setText(text) のような感じです。画像を指定するときは、画像のファイルを指定しなくてはいけないので request.data.setBitmap(image) を使います。このとき、引数には Windows.Storage.Streams.RandomAccessStreamReference を使わないといけない上に、URLから画像を参照するときは、Windows.Storage.Streams.RandomAccessStreamReference.createFromUri() を使うのですが、この引数もURI型の引数を指定しないと型が違うよ、とエラーが出ます。StringをURIにキャストするには、Windows.Foundation.Uri() を使います。同様に、URLを共有するときは、request.data.setUri() をってURI型の引数を与えてやると共有が可能なアプリ一覧が表示されて共有することができるようになります。
まとめ
とりあえずメソッド名とか長い。あと、型ある振る舞いするのに、実行時じゃないと型が違うことがわからないの、型の意味なさすぎる。
December 26th, 2012 11:37am